﻿using System;
using System.Text;
using GigaSite.Domain.Entities;

namespace GigaSite.Web.Areas.Catalog.Models
{
    /// <summary>
    /// Модель вакансии в списке вакансий
    /// </summary>
    public class VacancyListItemModel
    {
        /// <summary>
        /// Идентификатор вакансии
        /// </summary>
        public long Id { get; set; }

        /// <summary>
        /// Наименование вакансии
        /// </summary>
        public string VacancyName { get; set; }

        /// <summary>
        /// Уровень зарплаты
        /// </summary>
        public string Salary { get; set; }

        /// <summary>
        /// наименование компании
        /// </summary>
        public string CompanyName { get; set; }

        /// <summary>
        /// Идентификатор компании
        /// </summary>
        public long CompanyId { get; set; }

        /// <summary>
        /// Дата обновления вакансии
        /// </summary>
        public DateTime? VacancyDate { get; set; }

        /// <summary>
        /// Количество просмотров вакансии
        /// </summary>
        public int Views { get; set; }

        /// <summary>
        /// Город для которого актуальна вакансия
        /// </summary>
        public string VacancyCity { get; set; }

        /// <summary>
        /// Стандартный конструктор
        /// </summary>
        public VacancyListItemModel()
        {
            
        }

        /// <summary>
        /// Конструктор на основе доменного объекта
        /// </summary>
        /// <param name="vacancy">Доменный объект вакансии</param>
        public VacancyListItemModel(Vacancy vacancy)
        {
            Id = vacancy.Id;
            VacancyName = vacancy.JobTitle;

            // Формируем зарплату
            var sb = new StringBuilder();
            if (vacancy.MinSalary.HasValue)
            {
                sb.AppendFormat("от {0} ", vacancy.MinSalary);
            }
            if (vacancy.MaxSalary.HasValue)
            {
                sb.AppendFormat("до {0} ",vacancy.MaxSalary);
            }
            if (sb.Length > 0)
            {
                sb.AppendFormat("рублей");
            }
            Salary = sb.ToString();

            CompanyName = vacancy.Company != null ? vacancy.Company.DisplayName : vacancy.CompanyName;
            CompanyId = vacancy.CompanyId;
            VacancyDate = vacancy.DateModified.HasValue ? vacancy.DateModified : vacancy.DateCreated;
            Views = vacancy.Views;
        }
    }
}